Minulla on taulukon tilastonimi nimellä omena X banaani Y Kiivi z Minun täytyy laittaa omena, banaani ja kiivi hedelmäryhmään ja X, Y ja Z aakkosiksi kutsuttuun ryhmään. Onko mitään yksinkertaista C # -mekanismia sille?
Käytä IEnumerable-kohtaa. Jos ylikuormitus aiheuttaa indeksin. var hedelmät = statsname.Where ((s, i) => i% 2 == 0) .ToArray (); var aakkoset = statsname.Where ((s, i) => i% 2! = 0) .ToArray (); | Varastettu kohdasta Kuinka saada vaihtoehtoisia elementtejä numerolla C # var hedelmät = myArray.Where ((t, i) => i% 2 == 0). ToArray (); var aakkoset = myArray.Where ((t, i) => i% 2 == 1) .ToArray (); | Jos olen ymmärtänyt, että kysyt oikein, mitä haluat, on hyvin yksinkertaista: Haluat laittaa hedelmät hedelmäryhmään ja samoja aakkosille, ja ne näkyvät vaihtoehtoisesti taulukon tilastossa: for (int i = 0, j = 0; i luettelo = uusi Lista () {"omena", "X", "banaani", "Y", "Kiwi", "z"}; var result = list.Valitse ((l, i) => new {l, i}) .GroupBy (p => p.i% 2) .Valitse (x => x.Valitse (v => v.l) .ToList ()) .Listata(); Sitten sinulla on luettelo luetteloista: | luettelo hedelmät = uusi Luettelo (); luettelo aakkoset = uusi Luettelo (); for (int i = 0; i everyOther (IEnumerable -kokoelma) { käyttäen (var e = collection.GetEnumerator ()) { while (e.MoveNext ()) { tuotto tuotto e.Virta; e.MoveNext (); // ohita yksi } } } Voit ohittaa ensimmäisen elementin System.Linq.Skip-sovelluksella. merkkijono [] sanat = "apple X banana Y Kiwi z" .Split (); var hedelmät = jokainen muu (sanat); var aakkoset = jokainen muu (sanat.Ohita (1)); Käytä niitä vain uutena kokoelmana tai puheluna .ToArray () tai .ToList () heille: foreach (merkkijono f hedelmissä) Console.WriteLine (f); merkkijono [] anArray = hedelmät.ToArray (); // käyttäen System.Linq Nyt sinulla on mitä tarvitset. Iteraattorit ovat menetelmiä, jotka tuottavat tuottoa, katso Iterators (C # Programming Guide). Tämä on erittäin vahva piirre kielelle. Sinä pystyt: ohita elementit koristele elementtejä muuta tilausta ketjuta sekvenssit (katso System.Linq.Concat) ... | Tässä on joitain toimivia koodeja, toivottavasti tästä on sinulle hyötyä: käyttämällä järjestelmää; käyttämällä System.Collections.Generic; käyttämällä System.IO: ta; käyttäen System.Linq; käyttämällä System.Text; käyttämällä System.Threading.Tasksia; nimitila ReadFile { luokan ohjelma { static void ReadFile (merkkijono filePath, Lista asiakastunnukset, Lista puhelinnumerot) { merkkijono = merkkijono.Tyhjä; var fileStream = uusi StreamReader (filePath); bool isPhoneNumber = tosi; while ((rivi = fileStream.ReadLine ())! = null) { if (isPhoneNumber) { phoneNumbers.Add (Muunna.ToInt32 (rivi)); isPhoneNumber = väärä; } muu { custumerNames.Add (rivi); isPhoneNumber = tosi; } } fileStream.Close (); } staattinen void Main (merkkijono [] args) { Console.WriteLine ("Aloitti tiedoston lukemisen ..."); Lista custumersNamesList = uusi Lista (); Lista custumersPhonesNumbers = uusi Lista (); ReadFile ("SampleFile.txt", custumersNamesList, custumersPhonesNumbers); // Olettaen, että molemmilla luetteloilla on sama pituus. for (int i = 0; i